package demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelRead {
	public static void main(String[] args) throws IOException {
		// 创建文件
		File file = new File("C:/Users/zp/Desktop/excel原始/EBS用户角色权限表.xlsx");
		// 初始化输入流
		FileInputStream is = new FileInputStream(file);
		// 创建Excel,并指定Excel读取位置
		//Workbook wb = new HSSFWorkbook(is);
		Workbook	wb = new XSSFWorkbook(is);
		// 根据Workbook得到第0个下标的工作薄
		Sheet sheet1 = wb.getSheetAt(0);
		// 遍历工作薄中的所有行,注意该foreach只有Java5或者以上才支持
		List<User> list = new ArrayList<User>();
		for (Row row : sheet1) {
			String str = "";
			// 遍历行中的所有单元格 Java5+ 才能使用
			for (Cell cell : row) {
				// 单元格的参照 ,根据行和列确定某一个单元格的位置
				CellReference cellRef = new CellReference(row.getRowNum(),
						cell.getColumnIndex());
				// 打印单元格的位置
				// System.out.print("打印单元格的位置"+cellRef.formatAsString());
				
				switch (cell.getCellType()) {

				case Cell.CELL_TYPE_STRING:// String类型单元格
					StringBuilder sb=new StringBuilder();
					sb.append(str+"," + cell.getRichStringCellValue().getString());
						System.out.println(sb);
					str += "," + cell.getRichStringCellValue().getString();
					break;
					default:
				}
			}
			
			String aaa=str;
			
			User user = new User();

			String str2 = str.substring(1, aaa.length());
			if (str2.indexOf(",") == -1) {
				
				user.setName(str2);
				
				list.add(user);
				System.out.println(str2);
			} else {
				
				String getSignInfo = str2.substring(str2.indexOf(",") + 1);// 获取开始截取的位置
				String[] str3 = str2.split(",");

				System.out.print(str3[0] + "========"); // 打印出 x1
				System.out.println(getSignInfo);
				user.setName(str3[0]);
				user.setRoleId(getSignInfo);
				list.add(user);
			}

			

		}
		List<User> list1 = new ArrayList<User>();
		list1.addAll(list);
		ExcelWrite makeExcelTest = new ExcelWrite();
		makeExcelTest.exportExcel(list1);
		

	}

	public static String importExcel(String file) throws IOException {
		// 创建文件
		File file1 = new File(file);
		FileInputStream is = new FileInputStream(file1);
		// 创建Excel,并指定Excel读取位置
		//Workbook wb = new HSSFWorkbook(is);
		Workbook	wb = new XSSFWorkbook(is);
		// 根据Workbook得到第0个下标的工作薄
		Sheet sheet1 = wb.getSheetAt(0);
		// 遍历工作薄中的所有行,注意该foreach只有Java5或者以上才支持

		for (Row row : sheet1) {
			String str = "";
			// 遍历行中的所有单元格 Java5+ 才能使用
			for (Cell cell : row) {
				// 单元格的参照 ,根据行和列确定某一个单元格的位置
				CellReference cellRef = new CellReference(row.getRowNum(),
						cell.getColumnIndex());
				// 打印单元格的位置
				// System.out.print("打印单元格的位置"+cellRef.formatAsString());
				// 输出分隔符
				// System.out.print(" - ");
				// 得到单元格类型
				switch (cell.getCellType()) {

				case Cell.CELL_TYPE_STRING:// String类型单元格
					// 输出文本
					// if("".equals(cell.getRichStringCellValue()
					// .getString())){
					// System.out.println("空的");
					//
					// }
					str += "," + cell.getRichStringCellValue().getString();

					// System.out.println(cell.getRichStringCellValue().getString());
					break;
				// case Cell.CELL_TYPE_NUMERIC:// 数字类型
				// // 检查单元格是否包含一个Date类型
				// // 仅仅只检查Excel内部的日期格式,
				// if (DateUtil.isCellDateFormatted(cell)) {
				// // 输出日期
				// System.out.println(cell.getDateCellValue());
				// } else {
				// // 输出数字
				// System.out.println(cell.getNumericCellValue());
				// }
				// break;
				// case Cell.CELL_TYPE_BOOLEAN:// Boolean类型
				// System.out.println(cell.getBooleanCellValue());
				// break;
				// case Cell.CELL_TYPE_FORMULA:// 公式
				// // 输出公式
				// System.out.println(cell.getCellFormula());
				// break;
				// default:
				// System.out.println("");
				}

			}
			// System.out.println(row.getRowNum() +"  "+str);
			return str;
		}
		return null;

	}

}
